//
//  HMStatusViewModel.swift
//  HMWeibo
//
//  Created by wulei on 15/12/11.
//  Copyright © 2015年 wulei. All rights reserved.
//

import UIKit
// 微博视图模型- 处理单条微博的业务逻辑
class HMStatusViewModel: CustomStringConvertible {
    // 单条微博的视图模型
    var status: HMStatus
    
    // 单条微博的视图行高
    // 因为这个属性不用KVC 赋值所以不用
//    var rowHeight: CGFloat = 0
    
    
    var cellID: String {
        return status.retweeted_status != nil ? HMStatusRetweetedCellID : HMStatusCellNormalID
    }
    
  lazy var rowHeight: CGFloat = {
// 定义一个Cell
    var cell: StatusCell
    
    if self.status.retweeted_status != nil {
        cell = StatusRetweetedCell(style: .Default, reuseIdentifier: HMStatusRetweetedCellID)
    }else {
        cell = StatusNormalCell(style: .Default, reuseIdentifier: HMStatusCellNormalID)
    }

    

//       
        return cell.tableCellRowHeight(self)
    
        
    }()
    
    // 用户头像 URL
    var userProfileURL: NSURL {
        return NSURL(string: status.user?.profile_image_url ?? "")!
    }
    
    // 用户占位头像
    var userPlaceholderImage: UIImage {
        return UIImage(named: "avatar_default_big")!
    }
    
    // 用户会员级别
    var userMemberImage: UIImage? {
        
        // 根据mbrank 来生成图像
        if status.user?.mbrank > 0 && status.user?.mbrank < 7 {
            
            return UIImage(named: "common_icon_membership_level\(status.user!.mbrank)")!
        }
        
        return nil
        
    }
    
    // 用户认证图标
    ///认证类型，-1：没有认证，0，认证用户，2,3,5: 企业认证，220: 达人
    var userVipImage: UIImage? {

        switch(status.user?.verified_type ?? -1) {
        case 0: return UIImage(named: "avatar_vip")!
        case 2,3,5: return UIImage(named: "avatar_enterprise_vip")!
        case 220: return UIImage(named: "avatar_grassroot")!
        default: return nil
        }
        

    }
    
    // 缩略图 URL 数组,存储型属性
    var thumbnailUrls: [NSURL]?
    
    
    // 转发微博的文字
    var retweetedText: String? {
        
        guard let s = status.retweeted_status else{
            return nil
        }
        
        return "@" + (s.user?.screen_name ?? "") + ":" + (s.text ?? "")
        
        
    }

    // 构造函数
    init(status: HMStatus) {
       self.status = status
        
        //
        if let url = status.retweeted_status?.pic_urls ?? status.pic_urls {
        
            
            thumbnailUrls = [NSURL]()
            
            // "!" 当遍历数组的时候,如果数组是可选的,不允许直接遍历,因为是通过下标遍历的
            for dict in url {
                
                // "!" 因为字典是通过 'key' 来取值,如果 'key'值错误,会返回 nil
                let URL = NSURL(string: dict["thumbnail_pic"]!)
                
                // "!" 相信服务器返回的 URL 字符串一定能生成
                thumbnailUrls?.append(URL!)
            }
        }
    }
    
    var description: String {
        return status.description
    }
    
}